  module.exports = app => {

    // console.log(app);
    app.messenger.on('egg-ready',()=>{
      console.log('主app 执行了egg-ready')
      //发送给agent  有几个app 就会发送几次给agent
      //app.messenger.sendToAgent('agent-data', { text: 'app 发送给agent' });
      //发送给所有agent app 包括自己，这样有几个app 就会全部发送几次如果有2个app 就会有6个消息
      //app.messenger.broadcast('data',{text:'发送给所有agent app 包括自己'+process.pid}); 
    })
    // app.messenger.on('app_data',data=>{
    //   console.log('app data',data,process.pid); 
    // })
    // app.messenger.on('data',data=>{
    //   console.log(data,process.pid)
    // })
    // app.sessionStore={
    //   async get(key){
    //     let model=app.model.Session;
    //     console.log(key);
    //     let t=await model.find({keyid:key});
    //     console.log(t);
    //     if(t.length==0){ 
    //       return null;
    //     }
    //     return JSON.parse(t[0]);
    //   },
    //   async set(key,value,magage){
    //     console.log(key,value);
    //     let model=app.model.Session;
    //     value = JSON.stringify(value);
    //     await new model({
    //       keyid:key,val:value
    //     })
    //   },
    //   async destroy(key){
    //     let model=app.model.Session;
    //     await model.remove({keyid:key});
    //   }

    // }
    //const MongoStore = require('egg-session-mongo')(app);
    //可以给app添加属性方法，在大多方法内都可用app.来获取如controller，service ctx.app.也可以
    app.cache='star';
    //可以用ctx.app来获取
    //在继承于 Controller, Service 基类的实例中，可以通过 this.app 访问到 Application 对象。
    //在有些非用户请求的场景下我们需要访问 service / model 等 Context 实例上的对象，
    //我们可以通过 Application.createAnonymousContext() 方法创建一个匿名 Context 实例：
     // 应用会等待这个函数执行完成才启动
    app.beforeStart(async () => {
         console.log('beforeStart')
      // 保证应用启动监听端口前数据已经准备好了
      // 后续数据的更新由定时任务自动触发
        //await app.runSchedule('update_cache');
       // 也可以通过以下方式来调用 Service
      const ctx = app.createAnonymousContext();
      var t= await ctx.service.user.query_id(0);
      app.logger.debug(t);
      app.user =t.data;
      //app.sessionStore = new MongStore(/* options */);
    });
    app.once('server', server => {
      // websocket
      console.log('server')
    });
    app.on('error', (err, ctx) => {
      // report error
      //console.error(err,ctx);
    });
    app.on('request', ctx => {
      // log receive request
      console.log(ctx.request.method,ctx.request.url,ctx.request.query,ctx.params,ctx.request.body )
    });
    app.on('response', ctx => {
      // ctx.starttime is set by framework
      //const used = Date.now() - ctx.starttime;
      //console.log('time',used);
      // log total cost
    });
  };
  